home *** CD-ROM | disk | FTP | other *** search
- // lighting.c
-
- #include "light.h"
-
- /*
-
- NOTES
- -----
-
- */
-
- float scaledist = 1.0;
- float scalecos = 0.5;
- float rangescale = 0.5;
-
- byte *filebase, *file_p, *file_end;
-
- dmodel_t *bspmodel;
- int bspfileface; // next surface to dispatch
-
- vec3_t bsp_origin;
-
- qboolean extrasamples;
-
- float minlights[MAX_MAP_FACES];
-
-
- byte *GetFileSpace (int size)
- {
- byte *buf;
-
- LOCK;
- file_p = (byte *)(((long)file_p + 3)&~3);
- buf = file_p;
- file_p += size;
- UNLOCK;
- if (file_p > file_end)
- Error ("GetFileSpace: overrun");
- return buf;
- }
-
-
- void LightThread (void *junk)
- {
- int i;
-
- while (1)
- {
- LOCK;
- i = bspfileface++;
- UNLOCK;
- if (i >= numfaces)
- return;
-
- LightFace (i);
- }
- }
-
- /*
- =============
- LightWorld
- =============
- */
- void LightWorld (void)
- {
- filebase = file_p = dlightdata;
- file_end = filebase + MAX_MAP_LIGHTING;
-
- RunThreadsOn (LightThread);
-
- lightdatasize = file_p - filebase;
-
- printf ("lightdatasize: %i\n", lightdatasize);
- }
-
-
- /*
- ========
- main
-
- light modelfile
- ========
- */
- int main (int argc, char **argv)
- {
- int i;
- double start, end;
- char source[1024];
-
- printf ("----- LightFaces ----\n");
-
- for (i=1 ; i<argc ; i++)
- {
- if (!strcmp(argv[i],"-threads"))
- {
- numthreads = atoi (argv[i+1]);
- i++;
- }
- else if (!strcmp(argv[i],"-extra"))
- {
- extrasamples = true;
- printf ("extra sampling enabled\n");
- }
- else if (!strcmp(argv[i],"-dist"))
- {
- scaledist = atof (argv[i+1]);
- i++;
- }
- else if (!strcmp(argv[i],"-range"))
- {
- rangescale = atof (argv[i+1]);
- i++;
- }
- else if (argv[i][0] == '-')
- Error ("Unknown option \"%s\"", argv[i]);
- else
- break;
- }
-
- if (i != argc - 1)
- Error ("usage: light [-threads num] [-extra] bspfile");
-
- InitThreads ();
-
- start = I_FloatTime ();
-
- strcpy (source, argv[i]);
- StripExtension (source);
- DefaultExtension (source, ".bsp");
-
- LoadBSPFile (source);
- LoadEntities ();
-
- MakeTnodes (&dmodels[0]);
-
- LightWorld ();
-
- WriteEntitiesToString ();
- WriteBSPFile (source);
-
- end = I_FloatTime ();
- printf ("%5.1f seconds elapsed\n", end-start);
-
- return 0;
- }
-
-